package dssd.acciones;

import dssd.constantes.Constantes;
import dssd.modelo.Conductor;
import dssd.modelo.Solicitud;
import dssd.modelo.Usuario;
import dssd.servicios.IConductorService;
import dssd.servicios.ILicenciasService;

public class BuscarSolicitud extends AbstractAccion {
	private String campo = null;
	private String buscarPor = null;
	private String resultadoManejo = null;
	private String resultadoVial = null;
	private String comentarioVial = null;
	private String comentarioManejo = null;
	
	private ILicenciasService licenciasService = null;
	
	public ILicenciasService getLicenciasService() {
		return licenciasService;
	}

	public void setLicenciasService(ILicenciasService licenciasService) {
		this.licenciasService = licenciasService;
	}

	public String getResultadoManejo() {
		return resultadoManejo;
	}

	public void setResultadoManejo(String resultadoManejo) {
		this.resultadoManejo = resultadoManejo;
	}

	public String getResultadoVial() {
		return resultadoVial;
	}

	public void setResultadoVial(String resultadoVial) {
		this.resultadoVial = resultadoVial;
	}

	private IConductorService conductorService = null;
	

	public String getBuscarPor() {
		return buscarPor;
	}

	public IConductorService getConductorService() {
		return conductorService;
	}

	public void setConductorService(IConductorService conductorService) {
		this.conductorService = conductorService;
	}

	public void setBuscarPor(String buscarPor) {
		this.buscarPor = buscarPor;
	}

	public String getCampo() {
		return campo;
	}

	public void setCampo(String campo) {
		this.campo = campo;
	} 
	public String execute() throws Exception {
		
		String valor = this.getCampo();
		
		Conductor conductor = this.getConductorService().buscarPorDni(valor);
		if (conductor !=null){
			Solicitud solicitud = conductor.getUltimaSolicitud();
			if ((solicitud !=null) && (solicitud.pendienteDeExamen())){
				this.getRequest().setAttribute("solicitudPendiente", solicitud);
				this.getSession().put("solicitudActual", solicitud);
				return SUCCESS;
			}else {
				addActionError("Este conductor no tiene solicitudes para evaluar.");
			}
			
		}else{
			addActionError("No existe un usuario con ese DNI.");
		}
		return ERROR;
	
	}
	
	public String actualizarSolicitud(){
		Solicitud s = (Solicitud)this.getSession().get("solicitudActual");
		s.getEvaluacionVial().setResultado(this.getResultadoVial());
		s.getEvaluacionVial().setComentario(this.getComentarioVial());
		s.getExamenManejo().setResultado(this.getResultadoManejo());
		s.getExamenManejo().setComentario(this.getComentarioManejo());
		this.getLicenciasService().actualizarSolicitud((Usuario)this.getSession().get(Constantes.USUARIO),s);
		this.getRequest().setAttribute("solicitudPendiente", s);
		return SUCCESS;
	}

	public void setComentarioManejo(String comentarioManejo) {
		this.comentarioManejo = comentarioManejo;
	}

	public String getComentarioManejo() {
		return comentarioManejo;
	}

	public void setComentarioVial(String comentarioVial) {
		this.comentarioVial = comentarioVial;
	}

	public String getComentarioVial() {
		return comentarioVial;
	}
		

}
